package dao

import (
	"time"
)

// 这是 UserBalanceDetail 的全局公开dao对象，被service层调用!
var UserBalanceDetailDao = userBalanceDetailDao{}

// 用户余额明细
// 这是 user_balance_detail表 的实体类,这个实体类中的字段可以减少，但是不能在其基础上增加!
type UserBalanceDetail struct {
	Id        int32     `json:"id" form:"id" db:"id" v:"id"`
	Uid       int32     `json:"uid" form:"uid" db:"uid" v:"uid"`                 // 用户UID
	Type      int8      `json:"type" form:"type" db:"type" v:"type"`             // 类型
	Num       int32     `json:"num" form:"num" db:"num" v:"num"`                 // 数额,负数表示减少,正数表示增加
	Balance   int32     `json:"balance" form:"balance" db:"balance" v:"balance"` // 余额(铜币)
	Desc      string    `json:"desc" form:"desc" db:"desc" v:"desc"`             // 具体原因,支持html格式
	CreatedAt time.Time `json:"created_at" form:"created_at" db:"created_at" v:"created_at"`
}

// 注意:这是 UserBalanceDetail 的私有dao对象，只能在dao层内使用!
type userBalanceDetailDao struct {
	InsertTemplate func(arg UserBalanceDetail) (int64, error)                   //插入一条记录
	UpdateTemplate func(arg UserBalanceDetail) (int64, error)                   //更新一条记录
	DeleteTemplate func(id int64) (int64, error)                                `arg:"id"` //根据传入的主键删除一条记录
	SelectTemplate func(id int64) (UserBalanceDetail, error)                    `arg:"id"` //根据传入的主键获取一条记录
	List           func(arg UserBalanceDetailList) ([]UserBalanceDetail, error) //模糊分页查询
}

/*
// 这是 user_balance_detail 表的Postman测试参数
// 该结构体中的字段就是: 前后端交互的json字段!
type UserBalanceDetailPostman struct {
id
uid
type
num
balance
desc
created_at

}*/

// 这是 user_balance_detail 表的批量请求参数
type UserBalanceDetailReq struct {
	List []UserBalanceDetail `json:"list" form:"list"`
}

// 这是 userBalanceDetailDao.List()方法的请求参数
type UserBalanceDetailList struct {
	Page
}
